
# 导包
import pymysql
import traceback

# 定义空字典
dic = {}
# 连接数据库1

db_1 = pymysql.connect(host='被数据库地址',
                       port=端口号,
                       user='数据库用户名',
                       passwd='数据库用户密码',
                       db='数据库名')


# 连接数据库2
db_2 = pymysql.connect(host='被数据库地址',
                       port=端口号,
                       user='数据库用户名',
                       passwd='数据库用户密码',
                       db='数据库名')


def mysql_tables_DDL_select():
    # 创建数据库1的游标
    cursor = db_1.cursor()

    # 查询数据库中的所有表
    cursor.execute("show tables")
    # 返回游标所有数据
    data = cursor.fetchall()


    try:
        # 遍历所有数据库表
        for ts in data:
            print(ts)
            # 将元组转化为字符串
            for s in ts:
                # 查看所有表结构
                cursor.execute("show create table " + s)
                # 返回所有数据
                DDL=cursor.fetchall()
                # 将表结构转化为字典,添加到新字典dic中
                dic.update(dict.fromkeys(ts,[DDL[0][1]]))
                print(dic)
    finally:
        cursor.close()
        db_1.close()
    print("查询表DDL完成!")

# 创建新的数据库表格
def mysql_tables_DDL_create():
    mysql_tables_DDL_select()

    # 创建游标
    cursor = db_2.cursor()

    # 创建表格
    try:
        for n in dic:
            for v in dic[n]:
                cursor.execute(v)

                # 手动提交事物
                db_2.commit()

    except:
        # 事务回滚
        db_2.rollback()
        # 返回错误信息
        traceback.print_exc()

    finally:
        # 关闭游标和服务器
        cursor.close()
        db_2.close()

    print("创建表完成")

mysql_tables_DDL_create()

